package com.hzw.saas.web.shell.listener;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationListener;
import org.springframework.messaging.simp.user.SimpUserRegistry;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.messaging.SessionConnectEvent;

import javax.annotation.Resource;

/**
 * <p>
 *  在收到新的STOMP CONNECT以指示新的客户端会话开始时发布。该事件包含代表连接的消息，包括会话ID，
 *  用户信息（如果有）和客户端发送的所有自定义标头。这对于跟踪客户端会话很有用。
 *  预订此事件的组件可以使用SimpMessageHeaderAccessor或 包装包含的消息StompMessageHeaderAccessor
 * </p>
 *
 * @author sonam
 * @since 2021/5/21 16:58
 */
@Slf4j
@Component
public class SessionConnectListener implements ApplicationListener<SessionConnectEvent> {

    @Resource
    private SimpUserRegistry userRegistry; // 所有用户连接信息

    @Override
    public void onApplicationEvent(SessionConnectEvent event) {
        if(log.isDebugEnabled()) {
            userRegistry.getUsers().forEach(simpUser -> {
                log.debug(simpUser.toString());
            });
        }
    }

}
